import { getToken, setToken, removeToken } from "@/utils/auth"
import { login,getUserProfile,getUserDetailById } from "@/api/user"
import { resetRouter } from "@/router"
// 暴露子仓库的实例对象(核心配置)
export default {
  namespaced: true,
  state: {
    token: getToken() || '',//优先从本地存储获取token
    userInfo:{}
  },
  mutations: {
    updateToken(state, token) {
      state.token = token
      //token持久化
      setToken(token)
    },
    removeToken(state, token) {
      state.token = ''
      removeToken()
    },
    //更新用户信息
    updateUserInfo(state,info){
      state.userInfo=info
    },
    //清空用户信息
    removeUserInfo(state){
      state.userInfo={}
    }
  },
  actions: {
    //发送请求，获取token，存储vuex
    async userLogin(context,loginForm) {

      console.log(context, 'context');

      const res = await login(loginForm);
      // 获取token,存储到vuex
      console.log("data--vuex", res.data);
      console.log('有资格吗？');
      // 将token存到vuex
      context.commit('updateToken',res.data)
    },
    //获取用户信息，存储到vuex
    async getUserInfo(context){
      try {
        const res=await getUserProfile()
          console.log('res',res);
        
        const info=await getUserDetailById(res.data.userId)
        console.log('info',info);
        context.commit('updateUserInfo',{...res.data,...info.data})
        // 返回页面权限信息
        return res.data.roles.menus
      } catch (error) {
        console.log('error',error);
      }
    },
    // 清空信息  
    logout(context){
      context.commit('removeToken')
      context.commit('removeUserInfo')
      resetRouter()//重置路由

    }

  }
}

